package com.lifeverse.entity.enums;

/**
 * 资源状态枚举
 * 定义资源的使用状态
 */
public enum ResourceStatus {
    
    /**
     * 可用 - 资源可以被分配使用
     */
    AVAILABLE("可用", "资源可以被分配使用"),
    
    /**
     * 已分配 - 资源已被分配但未使用
     */
    ALLOCATED("已分配", "资源已被分配但未开始使用"),
    
    /**
     * 使用中 - 资源正在被使用
     */
    IN_USE("使用中", "资源正在被使用"),
    
    /**
     * 预留 - 资源被预留用于特定用途
     */
    RESERVED("预留", "资源被预留用于特定用途"),
    
    /**
     * 维护中 - 资源正在维护，暂时不可用
     */
    MAINTENANCE("维护中", "资源正在维护，暂时不可用"),
    
    /**
     * 故障 - 资源出现故障，无法使用
     */
    FAULTY("故障", "资源出现故障，无法使用"),
    
    /**
     * 已耗尽 - 资源已被完全消耗
     */
    EXHAUSTED("已耗尽", "资源已被完全消耗"),
    
    /**
     * 已回收 - 资源已被回收，等待重新分配
     */
    RECYCLED("已回收", "资源已被回收，等待重新分配"),
    
    /**
     * 已退役 - 资源已退役，不再使用
     */
    RETIRED("已退役", "资源已退役，不再使用");
    
    private final String displayName;
    private final String description;
    
    ResourceStatus(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 判断资源是否可用
     */
    public boolean isAvailable() {
        return this == AVAILABLE || this == RECYCLED;
    }
    
    /**
     * 判断资源是否正在使用
     */
    public boolean isInUse() {
        return this == ALLOCATED || this == IN_USE || this == RESERVED;
    }
    
    /**
     * 判断资源是否不可用
     */
    public boolean isUnavailable() {
        return this == MAINTENANCE || this == FAULTY || this == EXHAUSTED || this == RETIRED;
    }
}